﻿using H.Types;
using System;
using System.Collections.Generic;

namespace H.Eyes
{
    /// <summary>
    /// 表示一个图色查找任务
    /// </summary>
    public interface ISee : IDisposable
    {
        /// <summary>
        /// 获取所有可查找对象的名称
        /// </summary>
        IEnumerable<string> ObjNames { get; }

        /// <summary>
        /// 委托查找某个区域内是否存在某张图片能够匹配
        /// </summary>
        /// <param name="matchRect">希望查找的矩形区域</param>
        /// <returns>如果能够找到匹配图片,则返回true</returns>
        bool See(Rect matchRect);

        /// <summary>
        /// 委托查找某区域内是否有指定图片(颜色/色块/文字),如果有,则返回左上角坐标
        /// </summary>
        /// <param name="matchRect">希望查找的矩形区域</param>
        /// <param name="matchPoint">用于返回左上角坐标,如果查找失败,其值会被置为Point.Empty</param>
        /// <returns>如果查找图片成功,返回找到的下标(从0开始),(有些驱动可能不支持获取查到的颜色的序号)</returns>
        int See(Rect matchRect, out Pos matchPoint);

        /// <summary>
        /// 委托查找某个区域中是否存在多张图片的的匹配,如果有,返回所有的匹配,
        /// 其中matchPoints和返回值是相匹配的
        /// </summary>
        /// <param name="matchRect">希望查找的矩形区域</param>
        /// <param name="matchPoints">返回查找到的图片,如果返回值为null,此值也返回null</param>
        /// <returns>返回所有的匹配的图片的下标(有些驱动可能不支持获取查到的颜色的序号)</returns>
        int[] See(Rect matchRect, out Pos[] matchPoints);

    }
}
